package link_list;

/**
 * 在有序链表中存在重复的节点，删除重复的节点，原节点不保留
 * 例：1 -> 2 -> 2 -> 3 -> 3 -> 4  output: 1 -> 4
 * 思路：使用递归判断节点的值是否相同，相同的话把当前节点指向next.next。直到终点的null节点。
 */

public class DeleteDuplication {
    public static void main(String[] args) {
        DeleteDuplication duplication = new DeleteDuplication();
        ListNode res = duplication.deleteDuplicate(ListNode.getDuplicate());
        while (res != null) {
            System.out.println(res.val);
            res = res.next;
        }
    }

    public ListNode deleteDuplicate(ListNode listNode) {
        if (listNode == null || listNode.next == null) {
            return listNode;
        }

        ListNode next = listNode.next;

        if (listNode.val == next.val) {
            if (next.next != null) {
                next = next.next;
            }
            return deleteDuplicate(next);
        } else {
            listNode.next = deleteDuplicate(next.next);
            return listNode;
        }
    }
}
